2.2 Organization
The Common Lisp package is organized into
four files:
- cl.el
- This is the “main” file, which contains basic
functions and information about the package. This file is
relatively compact—about 700 lines.
- cl-extra.el
- This file contains the larger, more complex or unusual
functions. It is kept separate so that packages which only want
to use Common Lisp fundamentals like the
cadr
function won't need to pay the overhead of loading the more
advanced functions.
- cl-seq.el
- This file contains most of the advanced functions for
operating on sequences or lists, such as
delete-if
and assoc*.
- cl-macs.el
- This file contains the features of the packages which are
macros instead of functions. Macros expand when the caller is
compiled, not when it is run, so the macros generally only need
to be present when the byte-compiler is running (or when the
macros are used in uncompiled code such as a .emacs file). Most of the macros of this
package are isolated in cl-macs.el so that they won't take up
memory unless you are compiling.
The file cl.el includes
all necessary autoload commands for the functions
and macros in the other three files. All you have to do is
(require 'cl), and cl.el will take care of pulling in the other
files when they are needed.
There is another file, cl-compat.el, which defines some routines
from the older cl.el
package that are not otherwise present in the new package. This
includes internal routines like setelt and
zip-lists, deprecated features like
defkeyword, and an emulation of the old-style
multiple-values feature. This file is obsolete and should not be
used in new code. See Old CL
Compatibility.